"""
# ASGI服务器的入口文件


ASGI config for mysite project.

It exposes the ASGI callable as a module-level variable named ``application``.

For more information on this file, see
https://docs.djangoproject.com/en/3.2/howto/deployment/asgi/
"""

import os

from django.core.asgi import get_asgi_application
from .websocket import websocket_application


os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')

http_application = get_asgi_application()


# daphne -b 0.0.0.0 -p 8001 mysite.asgi:my_application


async def application(scope, receive, send):
    """

    :param scope: 是一个详细信息的字典，其中包含了（协议类型，请求路径，请求头，查询字符串，客户端IP，服务端IP和其他的东西）
    :param receive: 是一个接收消息的对象，很明显可以看到其中包含了一条管道对象，而这条管道，我理解为就是收发消息的通道
    :param send: 是一个发送消息的对象，里面也包含了这条管道。
    :return:
    """
    print('scope:', scope)
    if scope['type'] == 'http':
        await http_application(scope, receive, send)
    elif scope['type'] == 'websocket':
        print('接收到了websocket的信息了')
        await websocket_application(scope, receive, send)
    else:
        raise Exception('unknown scope type:', scope['type'])
